// 数组拍平：将一个嵌套多层的数组 array (嵌套可以是任何层数)转换为只有一层的数组
// 输入：[1,2,[3,4,[5,6],'7'],'a,b]c']
// 输出：[1,2,3,4,5,6,'7','a,b]c']

// 1. es6
const arr = [1, 2, [3, 4, [5, 6], '7'], 'a,b]c']

console.log(arr.flat(Infinity))

const flatArr = arr => {
  let res = []
  arr.map(item => {
    if (Array.isArray(item)) {
      res = res.concat(...flatArr(item))
    } else {
      res.push(item)
    }
  })
  return res
}

console.log(flatArr(arr))

function iterTree2 (arr) {
  while (arr.some(item => Array.isArray(item))) {
    arr = [].concat(...arr)
  }
  return arr
}
console.log(iterTree2(arr))
